/**
 * 构造签名
 * */
// class Ctor {
//   s: string
//   constructor(s: string) {
//     this.s = s
//   }
// }

// type SomeConstructor = {
//   new(s: string): Ctor
// }

// function fn(ctor: SomeConstructor) {
//   return new ctor('hello')
// }

// const cf = fn(Ctor)
// console.log(cf.s)

// ----------------------------------------

interface CallOrConstructor {
  // 构造签名
  new(s: string): Date
  // 调用签名
  (n?: number): number
}

function fn(date: CallOrConstructor) {
  let d = new date('2022-8-24')
  let n = date(100)
}